gmsubosfandomcom-20200214-history
GxSubOS
GxSubOS (originally Gimix SubOS in version 1.0) is a newer SubOS, having started development in April 2013 and currently still in a pre-alpha state. Its tagline is "It's the operating system within an operating system, made for no reason whatsoever!" The name is supposed to sound similar to the word "gimmick", reflecting on how the project was started on a whim. There are currently two versions, Gimix SubOS 1.0 Lite and GxSubOS 2.0. The former was discontinued prior to completion while the latter is still being actively developed. Gimix SubOS was written in GameMaker in version 1.0, and switched to using Pygame instead in versions 2.0 and onwards. This makes it somewhat unusual in relation to other SubOSes, as far as the underlying technology used goes. The author was inspired in part to make Gimix as his final GameMaker project after seeing BoredOS . The first public release was made on April 24, 2013. An official announcement of the SubOS's development was made on the Sub OS Dev forums on May 4, 2013; this announcement partly inspired in turn the founding of the Scubos project. The initial commit to the GitHub repository used for versions 2.0 and later was made on October 9, 2013. Features Gimix SubOS is still in its infancy, yet a lot of basic functionality is already in place. Some features the 1.0 version already had included: *A transparent shell and windows *Customizable window and text colors *A movable launcher complete with start menu *Support for 3rd-party desktop gadgets and applications (loaded via .txt file), written in GML and utilizing scripts for widget placement, etc. *An easy-to-use application window construction API which positions window UI elements using widget-packing and containers, allowing them to position and resize themselves automatically *A number of pre-included Creative Commons wallpapers (loading custom wallpapers from external files is not possible in Gimix SubOS Lite due to design limitations), or an option to use a solid color for a background instead *A GML prompt which allows the user to easily enter and run GML statements anytime they please (mainly for debug purposes) *Maximizable windows via either a button or an Aero Snap-like dragging gesture, and resizable by dragging the lower-right corner *Support for displaying desktop notifications *A dash which can be called up via the Alt key to rapidly launch apps or execute certain commands Additional features and enhancements are planned for the 2.0 version; some minor features, such as desktop widget support, will likely be removed. Applications Applications can be written for Gimix SubOS 1.0 in the form of .txt files containing GML code. Often these applications will be written utilizing scripts from the Gimix SubOS API to create widgets and containers to place these widgets in. The code for custom applications must first be installed through Gimix SubOS to make it available in its database of installed applications, then when loaded runs in the End Step event of a newly-created obj_appwindow_custom object. The official Gimix SubOS website has a page detailing the process of making custom applications. GxSubOS 2.0 apps are written in Python using a new API, which is still under development. Hello World Below are two examples of Hello World programs for GxSubOS. The first is in GML and will run on Gimix SubOS 1.0: // This is a sample Hello World application for Gimix SubOS 1.0. SetWindowDimensions(100, 100); UpdateAppwindowTitle("Hello, world!"); sample_vbox = CreateContainer("vbox", top_level_container); CreateLabel("Hello, world!", fa_center, sample_vbox); The second is in Python and will run on GxSubOS 2.0: # This is a sample Hello World application for GxSubOS 2.0. hello_world = self.CreateWindow(48, 0, 450, 250, 'Hello World!') vbox1 = VBox(widget_test.top_level_container, hello_world, []) hello_world.AddWidget(vbox1) top_label = Label(vbox1, hello_world, 'Hello World!') hello_world.AddWidget(top_label, vbox1) Official applications There are six official applications for Gimix SubOS 1.0, some of which were developed mainly for testing purposes. More 1st-party applications were planned as more widget types were going to be implemented to support them. These applications are currently only available for Gimix SubOS 1.0 "Yo-yo", with the exception of Calculator being available for GxSubOS 2.0 "Garter Snake" with the new name "GxCalculator". Calculator/GxCalculator A simple desktop calculator. System Settings The official app for changing various settings in Gimix SubOS and managing apps and gadgets. Chameleon This simple app makes the desktop shell change color to match the current wallpaper, much like the Unity shell used by Ubuntu. GxPad A simple text editor app which shows off widget size requests and the text entry widget. It is able to save and load .txt text files. This app was simply called "Textpad" during development. App Loader A proof-of-concept app which acts as a launcher to start other apps. It is notable for dynamically constructing its interface at startup to display a button for each installed app. GxFiles An in-development file manager application which utilizes the iconview widget. Both the widget and the application are still early in development, and the app is not considered usable yet. Version History Currently, GxSubOS is under heavy development and is still in a pre-alpha state. Work is ongoing both for the shell and the applications, as well as the widgets both utilize. The codenaming scheme for Gimix SubOS is currently to name each version based on the underlying technology used to make it. Hence, the GameMaker-based 1.0 version is called "Yo-Yo" after YoYo Games, while the 2.0 version is called "Garter Snake", since Python also shares its name with a snake. The pacing of development is based on goals set for certain features each release needs to have before it is considered complete for that milestone; the implementation is then done on the author's free time. Gimix SubOS Lite 1.0 "Yo-Yo" This is the first version of Gimix SubOS. The "Lite" part of the version name (and the "Yo-Yo" codename) are both references to the fact that this version was made using GameMaker 8.1 Lite. This version was made entirely using GameMaker Lite-compatible functions. This is partly due to the open-source nature of the SubOS (so anyone can freely recompile it from the .gm81 source), as well as to provide a technical challenge to its creator. An edition which would use GameMaker Standard functions to provide additional functionality was never planned. The focus for this release was the initial creation of a working desktop environment, along with a collection of useful first-party official apps. In particular, both the GxPad and GxFiles apps were to be completed in order for this version to be considered complete, as these two apps would have allowed for the easy creation and testing of other apps by the user and third parties. Progress had been slowed by the author's limited access to the development environment, and eventually Yo-Yo's discontinuation was announced along with a stated shift of focus on its successor. GxSubOS 2.0 "Garter Snake" This is the second version of the SubOS. The name has been shortened, and the underlying technology used to develop it has been switched to the Pygame game development library. As a result, this version is written in Python instead of GML and is available in a GitHub repository under the GNU GPL v3 license as true open-source software. The reason for the switch to Pygame instead of GameMaker: Studio is mostly due to the deprecation and removal of the execute_string() GML function, which Gimix SubOS 1.0 Lite depends on for loading and executing apps and gadgets, as well as executing special commands in its Alt+F2 dialog. The focus for this release is the porting of Gimix SubOS Lite 1.0 to Pygame, with the addition of extra enhancements and improvements. Apps and dialogs written for the 2.0+ versions have to be programmed in Python instead of GML. GxSubOS 2.0 currently allows for custom apps to be written in standalone Python .py scripts; a basic packaging format is planned to be introduced in this version for more complex apps and ease of app installation/updating apps the user installed manually from a package file. On January 16, 2014, support for downloading applications and updates for GxSubOS from GitHub and keeping track of these apps in a SQLite database was added . This allows GxSubOS 2.0 to better keep track of what apps it has available and allows for the possibility of automatic updates. Currently apps are installed by making a system call to Git to clone from the app's repository URL, but this approach requires Git to already be installed on the user's system and accessible from the system's path; this is not a major problem for Linux users, but Windows users may face substantial difficulty and extra configuration to get this feature working. A possible solution to the Git problem may involve using the Dulwich library instead, which is a pure Python implementation of Git without requiring Git itself to be installed. This version is still in active development. New Features These are the features currently planned for inclusion with GxSubOS 2.0. *Switch from GameMaker 8.1 Lite to Pygame for the engine used *Updated theme **Blurred backgrounds for transparent parts of the UI, like windows and the launcher **The black background used in the launcher and window titlebars is changed to a very dark aqua instead **Apps will be able to display their own icons on the launcher; this contrasts with Gimix SubOS 1.0's approach of using numbers for windows in place of icons due to technical limitations imposed by the use of GameMaker 8.1 Lite **New startup sound *Support for arbitrary monitor sizes *New wallpaper switcher with small previews and support for additional wallpapers *Basic package management **Improved backend for keeping track of installed apps using SQLite instead of INI files **A new package format for apps to simplify distribution and installation, as well as allow for apps which consist of multiple Python modules and external files *Additional widgets for use in GUI applications running inside GxSubOS *Use of Git to install GxSubOS apps and retrieve updates, such as from GitHub *Addition of an animated loading screen during startup *Addition of indicators, such as a shutdown button, clock, and battery indicator *GxText is now available as a functional IDE for GxSubOS apps Version Table Other Links *Gimix SubOS Lite in the YoYo Games Sandbox *Official GxSubOS site *GxSubOS development blog *GxSubOS 2.0 on GitHub Category:SubOSes Category:Open Source Category:GameMaker-Based Category:PyGame-Based